package com.github.cakin.shiro.chapter23.dao;

import com.github.cakin.shiro.chapter23.entity.Authorization;

import java.util.List;

/**
 * @className: AuthorizationDao
 * @description: 授权数据访问层
 * @date: 2020/6/1
 * @author: cakin
 */
public interface AuthorizationDao {
    /**
     * 功能描述：创建一条授权记录
     *
     * @param authorization 授权信息
     * @return Authorization 返回创建的授权信息
     * @author cakin
     * @date 2020/6/1
     */
    Authorization createAuthorization( Authorization authorization );

    /**
     * 功能描述：更新一条授权记录
     *
     * @param authorization 授权信息
     * @return Authorization 返回更新的授权信息
     * @author cakin
     * @date 2020/6/1
     */
    Authorization updateAuthorization( Authorization authorization );

    /**
     * 功能描述：删除一条授权记录
     *
     * @param authorizationId 授权记录id
     * @author cakin
     * @date 2020/6/1
     */
    void deleteAuthorization( Long authorizationId );

    /**
     * 功能描述：根据id找到对应的授权记录
     *
     * @param authorizationId 授权记录的id
     * @return Authorization 返回更新的授权信息
     * @author cakin
     * @date 2020/6/1
     */
    Authorization findOne( Long authorizationId );

    /**
     * 功能描述：根据所有的授权记录
     *
     * @return List<Authorization> 授权列表
     * @author cakin
     * @date 2020/6/1
     */
    List<Authorization> findAll();

    /**
     * 功能描述：根据appId和userId找到对应的Authorization
     *
     * @param appId  应用id
     * @param userId 用户id
     * @return Authorization 授权信息
     * @author cakin
     * @date 2020/6/1
     */
    Authorization findByAppUser( Long appId, Long userId );
}
